﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Data.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BolsaTalentos.BLL;

namespace InterfazBolsaTalentos.Egresado
{
    public partial class Vacantes : System.Web.UI.Page
    {
        private static string[] ColumnasNoDeseadas = {"ID"};

        protected void Page_Load(object sender, EventArgs e)
        {
            PoblarGridView_Vacante();
        }

        protected void GridView_Vacantes_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Label_MensajeNotificacionVacanteAplicada.Text = " ";

            this.Label_HabilidadesRequeridas.Text = "Habilidades requeridas:";
            this.TextBox_DetallesVacante.Visible = true;
            this.Label_Comentarios.Text = "¿Algun comentario?";
            this.TextBox_Comentarios.Visible = true;

            PoblarTextBox_DetallesVacante();

            this.Button_Aplicar.Enabled = true;
        }

        protected void Button_Aplicar_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).AplicarAVacante(Convert.ToInt32(this.GridView_Vacantes.Rows[this.GridView_Vacantes.SelectedIndex].Cells[1].Text), this.TextBox_Comentarios.Text);
                this.Label_MensajeNotificacionVacanteAplicada.Text = "La aplicacion ha sido realizada";
            }
            catch (Exception) 
            {
                this.Label_MensajeNotificacionVacanteAplicada.Text = "No ha podido aplicar a esta vacante. Verifique si ya tiene una aplicacion a esta vacante o intente nuevamente en unos minutos";
            }
        }

        private void PoblarGridView_Vacante()
        {
            if (this.DropDownList_VerSolo.SelectedValue == "0") 
            {
                var VacantesSource = from v in BolsaTalentos.BLL.Vacante.GetAllVacantes()
                             where v.SiActiva == true
                             select new
                             {
                                 ID = v.ID,
                                 Descripcion = v.Descripcion,
                                 FechaPublicacion = v.FechaPublicacion,
                                 Carrera = v.Carrera.Descripcion,
                                 Empresa = v.Publicante.Nombre
                             };

                this.GridView_Vacantes.DataSource = VacantesSource;
                this.GridView_Vacantes.DataBind();
            }
            if (this.DropDownList_VerSolo.SelectedValue == "1")
            {
                var VacantesSource = from v in BolsaTalentos.BLL.Vacante.GetAllVacantes()
                                     where v.SiActiva == true && v.Carrera.Descripcion == ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Carrera.Descripcion
                                     select new
                                     {
                                         ID = v.ID,
                                         Descripcion = v.Descripcion,
                                         FechaPublicacion = v.FechaPublicacion,
                                         Carrera = v.Carrera.Descripcion,
                                         Empresa = v.Publicante.Nombre
                                     };

                this.GridView_Vacantes.DataSource = VacantesSource;
                this.GridView_Vacantes.DataBind();
            }
            if (this.DropDownList_VerSolo.SelectedValue == "2")
            {
                var VacantesSource = from v in BolsaTalentos.BLL.Vacante.GetAllVacantes()
                                     where v.FechaPublicacion >= DateTime.Now.Subtract(new TimeSpan(10,0,0,0))
                                     select new
                                     {
                                         ID = v.ID,
                                         Descripcion = v.Descripcion,
                                         FechaPublicacion = v.FechaPublicacion,
                                         Carrera = v.Carrera.Descripcion,
                                         Empresa = v.Publicante.Nombre
                                     };

                this.GridView_Vacantes.DataSource = VacantesSource;
                this.GridView_Vacantes.DataBind();
            }

            //this.GridView_Vacantes.DataSource = BolsaTalentos.BLL.Vacante.GetAllVacantes();
            //this.GridView_Vacantes.DataSource = VacantesSource;
            //this.GridView_Vacantes.DataBind();
            this.HideUnwantedColumns();          // this shit just wont work!
        }
        private void PoblarTextBox_DetallesVacante()
        {
            Vacante TempVac = new Vacante(Convert.ToInt32(this.GridView_Vacantes.Rows[this.GridView_Vacantes.SelectedIndex].Cells[1].Text));

            this.TextBox_DetallesVacante.Text = "";
            foreach (Habilidad item in TempVac.Habilidades)
            {
                this.TextBox_DetallesVacante.Text += (item.Descripcion + "\n");
            }
        }
        private void HideUnwantedColumns()
        {
            //this.GridView_Vacantes.Columns[1].Visible = false;

            //foreach (string ColumnToHide in Vacantes.ColumnasNoDeseadas)
            //{
            ////DataGridColumn
            foreach (DataControlField columna in this.GridView_Vacantes.Columns)
            {
                if (columna.HeaderText == "ID")
                {
                    columna.Visible = false;
                }
            }
            //}
        }

        protected void Button_LogOff_Click(object sender, EventArgs e)
        {
            this.Session["UsuarioDeSesion"] = null;

            this.Response.Redirect("../General/Default.aspx");
        }

        protected void DropDownList_VerSolo_SelectedIndexChanged(object sender, EventArgs e)
        {
            PoblarGridView_Vacante();
            //this.Response.Redirect("Vacantes.aspx");
        }


    }
}
